home *** CD-ROM | disk | FTP | other *** search
- unit Importdd;
- interface
- uses DB, DBCtrls, DBTables;
- function AddToDict(var DictDB : tdatabase; var DictTable : ttable; var DictQuery : tQuery; var DictDataSource : tDatasource;
- var FromDB : tdatabase; var FromTable : ttable; var FromQuery : Tquery; var FromDataSource : tDatasource;
- const DictPath, DictTablename, FromPath, FromTablename : string): boolean;
-
-
- implementation
- uses sysutils, dialogs, forms, controls, dbutils;
- function AddToDict(var DictDB : tdatabase; var DictTable : ttable; var DictQuery : tQuery; var DictDataSource : tDatasource;
- var FromDB : tdatabase; var FromTable : ttable; var FromQuery : Tquery; var FromDataSource : tDatasource;
- const DictPath, DictTablename, FromPath, FromTablename : string): boolean;
- var
- tmpint, thisfield : integer;
- tmpstr : string;
- FromField : tField;
- begin
- try
- if openDB(DictDb, DictTable, DictQuery, DictDataSource,
- DictPath, DictTablename)
- and
- OpenDB(FromDB, FromTable, FromQuery, FromDataSource,
- FromPath, FromTablename)
- then begin with DictTable do begin
- for thisfield := 0 to fromTable.fieldCount -1 do begin
- append;
- findfield('Table_name').text := FromTablename;
- case FromTable.tabletype of
- ttDefault : tmpstr := 'ttDefault';
- ttdBase : tmpstr := 'ttDbase';
- ttParadox : tmpstr := 'ttParadox';
- ttASCII : tmpstr := 'ttASCII';
- end;
- findField('Table_type').text := tmpstr;
- findField('Field_name').text := FromTable.fields[thisfield].fieldname;
- findField('Field_type').text := FieldTypeStr[FromTable.fields[thisfield].datatype];
- FromField := FromTable.fields[thisfield];
- tStringField(findField('Tag')).value := IntToSTr(FromField.tag);
- tStringField(findField('Scr_prompt')).value := FromField.DisplayName^;
- tStringField(findField('Scr_fmt')).Value := FromField.EditMask;
- tStringField(findField('EditMask')).Value := FromField.EditMask;
- {DisplayText grabs the data in the first record for this field...}
- tStringField(FindField('Grd_prompt')).Value := FromField.DisplayLabel;
- tintegerField(FindField('Grd_width')).Value := FromField.DisplayWidth;
- tIntegerField(FindField('Tab_order')).value := FromField.index;
- tbooleanField(FindField('Field_idx')).value := FromField.isIndexField;
- tbooleanField(FindField('Required')).value := Fromfield.Required;
- case fromTable.fields[thisfield].datatype of
- ftUnknown : tmpint := 0;
- ftString : tmpint := fromField.size;
- ftSmallint,
- ftInteger,
- ftWord,
- ftBoolean,
- ftFloat,
- ftCurrency : tmpint := 0;
- ftBCD : tmpint := fromField.size;
- ftDate,
- ftTime,
- ftDateTime : tmpint := 0;
- ftBytes,
- ftVarBytes,
- ftBlob,
- ftMemo,
- ftGraphic : tmpint := fromField.size;
- end;
- tIntegerField(FindField('Field_len')).value := tmpint;
- case fromTable.fields[thisfield].datatype of
- ftUnknown : begin
- messagedlg('Unkown field type!',mtinformation, [mbOK], 0);
- end;
- fTString : begin
- tIntegerField(FindField('Field_len')).value := FromField.size;
- {TDBEDIT, memo: set isMasked true if Editmask nonblank;
- set maxLength to field_len}
- end;
- fTSmallint,
- ftInteger,
- ftword : begin
- if TIntegerField(FromField).editFormat <> ''
- then tStringField(findField('EditMask')).Value := TIntegerField(FromField).EditFormat
- else tStringField(findField('EditMask')).Value := TIntegerField(FromField).EditMask;
- tStringField(findField('Scr_fmt')).Value := TIntegerField(FromField).DisplayFormat;
- tIntegerField(FindField('Field_len')).value := TIntegerField(FromField).size;
- tIntegerField(FindField('minval')).value := TIntegerField(FromField).minvalue;
- tIntegerField(FindField('maxval')).value := TIntegerField(FromField).maxvalue;
- end;
- ftFloat,
- ftCurrency,
- ftBCD : begin
- tIntegerField(findField('Field_dec')).value := TFloatField(FromField).precision;
- if TFloatField(FromField).editFormat <> ''
- then tStringField(findField('EditMask')).Value := TFloatField(FromField).EditFormat
- else tStringField(findField('EditMask')).Value := TFloatField(FromField).EditMask;
- tStringField(findField('Scr_fmt')).Value := TFloatField(FromField).DisplayFormat;
- tIntegerField(FindField('Field_len')).value := TFloatField(FromField).size;
- {these are double values!
- tIntegerField(FindField('minval')).value := FromField.minvalue;
- tIntegerField(FindField('maxval')).value := TFloatField(FromField).maxvalue;
- }
- end;
- end;
- post;
- end; {for thisfield to fieldcount}
- end; {with DictTable}
- result := true;
- end {if was able to open both databases}
- else begin
- {could not open both databases...}
- result := false;
- exit;
- end;
- except { some error occured after tables open}
- on EdataBaseError do begin
- screen.cursor := crDefault;
- MessageDlg('DB error while reading field info...', mtInformation, [mbOK], 0);
- result := false;
- end;
- end; {of exceptions}
- end;
-
- {
- ftUnknown
- TStringField Fixed length text data up to 255 characters
- TSmallintField Whole numbers in the range -32768 to 32767
- TIntegerField Whole numbers in the range -2,147,483,648 to 2,147,483,647
- TWordField Whole numbers in the range 0 to 65535
- TBooleanField True or False values
- TFloatField Real numbers with absolute magnitudes from 5.0*10-324 to 1.7*10308
- accurate to 15-16 digits
- TCurrencyField Currency values. The range and accuracy is the same as TFloatField
- TBCDField Real numbers with a fixed number of digits after the decimal point.
- Accurate to 18 digits. Range depends on the number of digits after the
- decimal point. [Paradox only]
- TDateField Date value
- TTimeField Time value
- TDateTimeField Date and time value
- TBytesField Arbitrary data field without a size limit
- TVarBytesField Arbitrary data field up to 65535 characters, with the actual length stored
- in the first two bytes
- TBlobField Arbitrary data field without a size limit
- TMemoField Arbitrary length text
- TGraphicField Arbitrary length graphic, such as a bitmap
- }
- (**
- property Value: string; {TStringField}
- property Value: Longint; {TIntegerField, TSmallintField,
- TWordField}
- property Value: Double; {TBCDField, TCurrencyField,
- TFloatField}
- property Value: Boolean; {TBooleanField}
- property Value: TDateTime {TDateField, TDateTimeField,
- TTimeField}
- **)
-
- end.
-